カオスエンジニアリングが楽になる Issues Manager を紹介します #Epsagon #IssuesManager
こんにちは、コンサル部のテウです!:D
今回は Epsagon の Issues Manager 機能を紹介したいと思います。
Epsagon を初めて接する方は先ず前回の記事を読んでみてください。
AWS re:Invent 2018: Applying Principles of Chaos Engineering to Serverless
Yan Cui さんが AWS re:Invent 2018 で発表した内容ですが、サーバーレス、もしくは、マイクロサービスにおけるカオスエンジニアリングの具体的な実装方法について説明してくれています。
カオスエンジニアリングを頭に浮かべると何かを「壊す」というイメージを持っている方が多いかと思います。しかし、カオスエンジニアリングはサービスを壊すことではなく、サービスのレジリエンスを持続的にテストし、どんな状況でも耐えるサービスを作っていくための手段を意味します。
上記のYan Cuiさんのセッションは、サーバーレス環境でのカオスエンジニアリングについて非常に分かりやすく説明してくれますので、興味ある方は是非ご視聴ください。彼はサーバーレス環境でよくある問題点(イシュー)についても紹介してくれてるんですが、解決方法については正直難しい感がありました。
ですが、去年の2月からリリーズされました Epsagon の Issues Manager を活用することで、サーバーレスアーキテクチャー、もしくは、マイクロサービスでの問題解決がとても楽になりました。本記事では Epsagon の Issues Manager がどういう問題点を解決できるかを紹介させて頂きます。
本記事では、主にサーバーレスの問題点について説明していますが、Epsagon の Issues Manager はサーバーレスアーキテクチャー以外のマイクロサービス環境でも同様に使えると思いますので、最後まで読んで頂ければと思います :)
サーバーレス環境でありえる問題点
1. 誤ったタイムアウト設定
api-a のタイムアウト設定をしっかり意識せずタイムアウト設定をしてしまうと、api-b や api-c の遅延により、api-a がタイムアウトされる場合はサーバーレス環境で珍しくない問題点だと思います。タイムアウト設定を必要以上長く設定すると、サービスを呼び出した他のサービスやクライアント側にもよくない影響を与えるため、適切なタイムアウト設定することが重要です。ここで、実際どういう判断と基準に従ってタイムアウトを設定するべきかについては、トレースをトラッキングできるツールを採用する案が一番確実でしょう。
2. エラーハンドリングができていない
ある程度のエラーハンドリングをしておいたとしても、全てのエラーを事前に考慮し、ハンドリングしておくのは現実的に不可能なことですね。ですが、エラーハンドリングができていない場合には、生じたエラーにより、サービスの動作が大幅影響を与えられる場合もよくある問題です。こういう問題は、プロアクティブな姿勢でカオスエンジニアリングをシステムに導入し、本番環境にデプロイする前、十分なテスト及び改善を繰り返すことにより解決できるかと思います。こういうカオスエンジニアリングによるスピード感のある問題検出と改善の繰り返しができるためには、アーキテクチャー全体的に可観測性が確保されてある前提がありますね。
3. 通信先が故障されてる
データストアや他のサービスに問題が発生し、この問題がそのままシステム全体に影響を与える問題ですね。キャパシティ設定が間違ってたり、スケーラブルではないサービスにボトルネックされる等の問題はサーバーレス構成で上記の図のような問題を発生させるよくある原因です。上記の図は一つのサービスと一つのデータストアで構成されて、非常にシンプルですが、実際にサービスをサーバーレスやマイクロサービスパターンを採用して開発すると、可観測性のためのツール無しでは、どこでどんな問題が生じてあるのかを把握することさえ厳しくなります。
Issues Manager とは
上記の問題と既にずっと戦ってこられた皆さんに良い知らせがあります。
去年の2月にリリーズされた Issues Manager は、名前の通り Epsagon に登録されてある皆さんのサービスの状態を(ニア)リアルタイムで監視し、異常(イシュー)が生じたらすぐ Issues Manager にこの異常が表示されます。もちろん、表示されることと同時にSlackやPagerDuty等へのアラート設定も可能です。
Issues Manager は Epsagon に登録されたサービスの全ての問題(イシュー)が時間順に列挙されています。このイシューには、エラー、タイムアウト、メモリ不足 (out-of-memories)、タイムアウトに近づいているイベント等のワーニング等が含まれています。上記の図で分かると思いますが、ヒストグラムも表示されていて、イシューの頻繁度や密度についても一目で把握できます。
Issues Manager を有効にするため皆さんが設定する事はありません。つまり、何の設定もしなくても、異常(イシュー)が生じたら教えてくれます。
あと、前回の記事でも書きましたのですが、Epsagon に皆さんのサービスを登録するための設定もほとんどありません。
このような自動イシュー検出機能により具体的にどんなメリットがあるのか次の章で紹介します。
Issues Manager のメリット
1. サービス運用時に発生する問題が簡単に把握出来る
サービス運用時に問題が発生したら、Issues Manager に表示され、そこからすぐトラブルシューティングができます。例えば、以下のイシューをクリックすると、
関連のあるメトリクスやログ、トレース情報が表示されます。
そのトレースの一つをクリックすると、
上記のようなトレースが図で表示され、分かりやすく分析することができます。更に以下のように実際に問題になったパラメータ情報まで分かり、トラブルシューティングが非常に簡単に出来ると思います。
AWS環境ですと、こんな楽なトラブルシューティングが Epsagon の AWS Integration用 IAM Roleを作成するだけで可能なため、必要な時にすぐ採用して試してみることができます。
2. サービスをテストする際に問題点の迅速な検出が出来る
カオスエンジニアリング等、サービスをデプロイする前にテストを行う際、どんな問題が発生しているのかを Issues Manager だけ見ると分かるでしょう。
3. 予想外の問題点が検出出来る
予想外の問題を検出するにも効果的なはずですね。Issues Manager と共に Service Map を見るとサービス全体的な観点で Blast Radius も秒で分かります。
Epsagon Playground
Epsagon は Playground を運用しています。なので、サービスに登録しなくても誰でもすぐ Epsagon を試してみることが可能です。ご自身のサービスにどのように活用出来るか、Epsagon のいろんな機能を楽しく試みるのはいかがでしょうか?